﻿//-----------------------------------------------------------------------
// <copyright file="TupleEnums.cs" company="tuliprules.org">
//     Copyright (c) 2010 tuplelister, tuliprules.org.
// </copyright>
// <summary>This is the Tuple enumerations.</summary>
//-----------------------------------------------------------------------

namespace Tulip.Engine.Models.ClosedWorld
{
    /// <summary>
    /// Tuple roles.
    /// </summary>
    /// <remarks>
    /// An Entity tuple is bound to a single 'fact' at runtime and represents a distinct entity.
    /// A Join tuple is bound to multiple 'facts' at runtime and represents a join on several entities.
    /// A JoinRoot tuple is a template for a family of Join mode tuple types, and pre-defines
    /// fact storage for a sequence of joins.
    /// A Production tuple is bound to multiple 'facts' an represents an activation of a rule on the 
    /// agenda.
    /// </remarks>
    public enum TupleRole
    {
        /// <summary>
        /// An entity tuple.
        /// </summary>
        Entity,

        /// <summary>
        /// A join root tuple.
        /// </summary>
        JoinRoot,

        /// <summary>
        /// A join tuple.
        /// </summary>
        Join,

        /// <summary>
        /// A production tuple.
        /// </summary>
        Production
    }
}
